\chapter{Test}

Le projet et les tests ont été effectués dans un réseau de machines virtuelles (VM).\\
Ce réseau est constitué de trois postes, Immortal, Opeth(client légtime) et Oscar(client illégitime).\\
Immortal : 192.168.0.1\\
Opeth : 192.168.0.2\\
Oscar : 192.168.0.3\\
Les trois machines sont connectées via un switch et font parties du même sous-réseau.\\
Durant ces tests, les différents services demandés dans la requête ne sont pas représentatifs des services réellement mis à disposition. 

\section{Client légitime}
\subsection{Endurance}
\paragraph{}
Le but de ce test est de vérifier que le serveur SPA est capable de supporter une exécution prolongée afin de combler les exigences de performances décrites dans la section 2.2.1.\\
Pour ce faire,  le test requiert un client légitime, un serveur et un script pour le client.\\

Script :
\begin{verbatim}
#!/bin/bash
x=1
while [ $x -le 1800 ]
do
  ./client 192.168.0.2 192.168.0.1 tcp/22:udp/12344
  sleep 2
  x=$(( $x + 1 ))
done
\end{verbatim}
Ce script permet de lancer 1800 fois le client toutes les 2 secondes.\\\\
Protocole de Test :
\begin{enumerate}
\item Vérification du pare-feu sur le serveur. La politique par défaut en "INPUT" est à "DROP" et la seule règle pour "INPUT" est d'accepter les connexions déjà existantes.
\item Lancement du serveur.
\item Lancement du script client.
\item Attendre que le script client se termine.
\item Attendre que le temps de validité de la dernière requête soit dépassé.
\item Vérification du pare-feu sur le serveur. La configuration doit être identique au point 1.
\end{enumerate}

\paragraph{}
Résultat escompté :\\
Pour que ce test soit considéré comme réussi, le serveur ne doit souffir d'aucune interruption lors de l'exécution et le pare-feu doit retourner à son stade de départ.

\paragraph{}
Résultat effectif :\\
Durant ce test, le serveur a été sollicité durant 1 heure. Après l'arrêt du script client, le serveur n'a répertorié aucune erreur lors de l'exécution. Et la vérification du pare-feu montre que le serveur n'a laissé aucune trace de son activité.\\
Le test est donc réussi.

\subsection{Fiabilité}
Le but de ce test est de s'assurer que le serveur effectue bien toutes les actions décrites dans la section 2.1 et 2.2.2.\\
Pour ce faire,  le test requiert un client légitime et un serveur.\\

Protocole de Test :
\begin{enumerate}
\item Vérification du pare-feu sur le serveur. La politique par défaut en "INPUT" est en "DROP" et la seule règle pour "INPUT" est d'accepter les connexions déjà existantes.
\item Lancement du serveur.
\item Lancement du client.
\item Attendre la récéption du paquet sur le serveur.
\item Affichage des règles du pare-feu avant que le temps de validité de la requête soit dépassé.
\item Attendre que le temps de validité de la dernière requête soit dépassé.
\item Vérification du pare-feu sur le serveur. La configuration doit être identique au point 1.
\end{enumerate}

\paragraph{}
Résultat escompté :\\
Pour que ce test soit considéré comme réussi, le serveur doit, à la reception d'une demande, modifier les règles du pare-feu pour autoriser l'accès au(x) service(s) demandé(s). Puis, une fois le temps de validité dépassé, effacer ces mêmes règles du pare-feu pour interdire à nouveau l'accès au(x) service(s).

\paragraph{}
Résultat effectif :\\
\begin{figure}[!h] %on ouvre l'environnement figure
\center
\includegraphics[scale=0.3]{testfiabilite1.png} %ou image.png, .jpeg etc.
\includegraphics[scale=0.4]{testfiabilite2.png} %ou image.png, .jpeg etc.
\caption{Résultat du test de fiabilité} %la légende
\label{testfiabilite} %l'étiquette pour faire référence à cette image
\end{figure} %on ferme l'environnement figure
Test réussi.

\subsection{Mémoire}
Le but de ce test est de s'assurer qu'il n'y a pas de fuite mémoire, et ce pour le client et le serveur. En effet une fuite mémoire n'est jamais une bonne chose pour la stabilité d'un programme. C'est pourquoi, le client et le serveur, en accord avec le besoin décrit en section 2.2.1, se doivent d'être le plus proche possible du zéro absolu en terme de fuite mémoire.\\

Protocole de Test :
\begin{enumerate}
\item Lancement du serveur (configuré pour ne capter qu'un nombre limité de boucle) via valgrin.
\item Lancement du client via valgrin.
\end{enumerate}

\paragraph{}
Résultat escompté :\\
Zéro fuite mémoire.

\paragraph{}
Résultat effectif pour le client:\\
\begin{figure}[!h] %on ouvre l'environnement figure
\center
\includegraphics[scale=0.7]{testmemoireclient.png} %ou image.png, .jpeg etc.
\caption{Résultat du test de mémoire coté client} %la légende
\label{testmemoireclient} %l'étiquette pour faire référence à cette image
\end{figure} %on ferme l'environnement figure
Le test pour le client est une reussite totale. Le programme ne souffre d'aucune fuite mémoire.

\paragraph{}
Résultat effectif pour le serveur:\\
Le test pour le serveur est moins glorieux, en effet celui-ci affiche une fuite mémoire d'une centaine d'octets. Le serveur devrait donc subir une série d'optimisation pour être irréprochable.

\newpage
\section{Client illégitime}
\subsection{Rejeu - Péremption}
Le but de ce test est de s'assurer que le serveur détecte bel et bien une tentative de demande non légitime, que se soit en essayant de rejouer un paquet ou en envoyant un paquet périmé. Ce test permet de valider les besoins décrits dans la section 2.2.3.\\

Protocole de Test :
\begin{enumerate}
\item Lancement du serveur.
\item Lancement du client illégitime.
\item Regarder le comportement du serveur lors de la récéption des demandes frauduleuses.
\end{enumerate}

\paragraph{}
Résultat escompté :\\
Le serveur doit dans ce test accepter le premier paquet, qui est une demande légitime, puis refuser les deux derniers paquets, qui correspondent respectivement à un paquet rejoué et à un paquet périmé.\\\\

Résultat effectif :\\
Le serveur réagi de la façon escompté, il accepte la 1\up{ère} demande et rejete les deux autres. En effet le serveur arrive à detecter que la deuxième demande est un rejeu puisque la somme de hashage de la 1\up{ère} demande et de la 2\up{ème} sont identique, et le dernier paquet étant hors de la fenêtre de temps acceptée par le serveur, ce dernier est directement rejeté sans analyse.\\
Le test est donc une réussite.
\begin{figure}[!h] %on ouvre l'environnement figure
\center
\includegraphics[scale=0.4]{testclientillegitime.png} %ou image.png, .jpeg etc.
\caption{Résultat du test avec le client illégitime} %la légende
\label{testclientillegitime} %l'étiquette pour faire référence à cette image
\end{figure} %on ferme l'environnement figure
